約 5,978,143 件
https://w.atwiki.jp/skmt200x/pages/115.html
Keytool概要 デフォルトのキーストアの格納先 キーストアに格納されている鍵一覧 証明書のインポート 秘密鍵を含むPKCS12のインポート Jarファイルの署名 Log4J概要歴史的なこと Log4Jについて(おさらい)1.2.x系(EOL) 2.x系統 その他のログAPIについてLogBack SLF4J 性能に対する考察 設定などに関して基本的な概念などについてLoggernameでの指定について additivityについて Appender ある程度(ほぼ)十分な設定 設計に関してアプリケーションとしての出力にはLog4Jは使わない。 コンソール(標準出力、標準エラー)向けの設定は分ける。 基本的な情報源 JDK7.0のディレクトリ構成 未分類の要検証項目 TOPへ編集 基本的な情報源 Java Plattoform Documentation TOPへ編集 JDK7.0のディレクトリ構成 JDK File Structure for Windows JDK Development Tools 未分類の要検証項目 jarsignerツールによる署名 JARインデックス JMXTomcatの監視 TomcatのSNMPの設定 JVM TI Preferences API微妙な使い勝手かもしれない。 予想通り、Windowsではレジストリ、Linux環境ではユーザホームの.java以下にディレクトリツリーを作成して、キーと値を保存する形式を採用している。 Javaスクリプト JDKのツール全般 http //java.sun.com/javase/ja/6/docs/ja/technotes/tools/index.html 最終更新日 [2014-12-27]
https://w.atwiki.jp/fns1556/pages/36.html
Java Updaterの無効化(Windows) 1.msconfigを使う場合 ファイル名を指定して実行にて「msconfig」 スタートアップタブでJava(TM) Platform SE Auto Updater 2.0(もしくはjusched)のチェックを外す 2.レジストリを直接消す場合 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\SunJavaUpdateSched 上記キーを削除する
https://w.atwiki.jp/kogiku/pages/11.html
java関連 JAVAダウンロード ①以下のHPより対象Vaesionをダウンロード http //java.sun.com/j2se/1.5.0/ja/download.html ②環境変数の設定 winXP/win2000 コントロールパネル-システム-環境変数 上記より古いバージョン ファイル名を指定して実行」を選択し、「msconfig」と入力して「OK」 「PATH」項目に・・・ ;C Program FilesJavaj2re1.4.2_14 と追記してPC再起動
https://w.atwiki.jp/api_programming/pages/36.html
下位ページ Collection File(ファイル) HTTP通信 JSONIC JSONObject JSP Servlet Swing 文字列 日時 構文・処理 Content Listリストを生成Generics リストにデータを追加 リストのi番目のデータを取得 Mapインターフェース要素の格納 要素の取り出し 要素数を取得 全てのキーを取得 含まれている全てのキーと値のセットを表示 getter,setterについて JREとJDK Cookie ログ使い方 変数のクラス名を調べる List http //d.hatena.ne.jp/nattou_curry_2/20090726/1248600833#list Listインターフェース リストを生成 List データ型 リストの名前 = new ArrayList データ型 (); Generics データ型 に基本データ型は指定できない。例えば int。この場合は Integer を使う。 ArrayListクラス - JavaDrive リストにデータを追加 List.add(E); リストのi番目のデータを取得 List.get(int i); List.get(i) Mapインターフェース Mapインターフェース HashMap キーと値を、セットで登録する。HashMap - JavaDrive java.util.HashMap TreeMap キーと値を、セットで登録する。キーの順序で自動ソートがかかる。java.util.TreeMap 要素の格納 HashMap.put(K,V) 要素の取り出し HashMap.get(K) 要素数を取得 HashMap.size() 全てのキーを取得 HashMap.KeySet() 含まれている全てのキーと値のセットを表示 for(String key hashmap.KeySet()){ hashmap.get(key); // キーを使って、値を取り出す } http //www.javadrive.jp/start/hashmap/index1.html https //docs.oracle.com/javase/jp/6/api/java/util/Map.html getter,setterについて member変数名が member の場合 getMember(E) setMember() 変数名が違っても(たとえば、メンバ変数が_private←予約語なのでそのまま使えない)、 getPrivate(E) setPrivate() としておけば、メンバ変数名がprivateかのように扱える。 JREとJDK バージョンを変えたら急にエラーを吐き出したりする。 JRE Java で作られたプログラムを実行するとき必要 JDK Java でプログラムを作るとき必要 JSPを使う場合には JREではなくてJDKが必要みたい。 Cookie Cookie ログ java.util.logging.Logger を用いる(昔は無かったので、log4j等、別の方法だった。) 使い方 final Logger logger = Logger.getLogger("SampleLogging") ロガーに名前をつける。クラス名を与えることが多い。 logger.info("隣の客は良く柿食う客だ。"); Logger.getLogger(str) Google/GAEの管理コンソールで、INFOレベルのログを見るには、WEB-INF内のlogging.propertiesを設定を変える Google App Engineでサーブレットのログを出力/確認する - Try Lifelog http //www.atmarkit.co.jp/ait/articles/0801/08/news128.html 変数のクラス名を調べる String(val.getClass().getName()); getClass() は Object で定義され、Class が返る。 この Class に .getName() で取得。ただし、クラスがわかる訳で型だとわからない。 http //www.itmedia.co.jp/enterprise/articles/0407/26/news035.html
https://w.atwiki.jp/kanekotky/pages/14.html
Testing TestNG Testing EJB3 apps with TestNG Announcing TestNG 4.5 その他テスト ConTestを使用したマルチスレッド・ユニットのテスト ActiveMQ 4.0 release How to tune Apache ActiveMQ Tangosol http //www.tangosol.com/html/index.shtml クラスタ化アプリケーションのセッション管理 言語 Javaのオブジェクトサイズの測り方、sizeof 浅煎り珈琲 Java アプリケーション入門 PDF Javaアプリケーションから動的にPDFファイルを生成するiText Spring PetStore SpringPetstore JPetstore OrderForm must be Serializable 自動化 JavaOne Tokyo 2005 - 自動化、心掛けてますか? 貴重な時間は大切に DI Container DIxAOPコンテナ「Seasar2とSpring」 先進DIコンテナ「Apache Geronimo」、「HiveMind」を試す Using Dependency Injection in Java EE 5.0 Spring AOPサンプルアプリでAOPを理解する AOP aspectj project JBossAOP アスペクト指向のバリエーション解説 2004年末~2005年夏までの連載。少し古いのだが、AspectJ、JBossAOP、AspectWerkzについて解説。 AOPの理想と現実 java.lang.instrument java.lang.instrument JTA Javaの理論と実践 JTSを理解する -- 見えない魔法 Mustang jrunscriptビルトインオブジェクト一覧 Image I/O Improvements in Mustang JOnAS ObjectWeb Conference 2006 - ObjectWeb、次期JOnASでは自律機能を強化 ライブラリ Joda Time - Java date and time API性能等も考慮された日付処理ライブラリ JGraphJGraph is the most powerful, easy-to-use, feature-rich and standards-compliant open source graph component available for Java Tools IBM Thread and Monitor Dump Analyzer for Java Technology 他 Java WebSphere についてのいろいろ EHCache Hibernateでインテグレーション層のDAOデザインを考える MD5 cryptによるLinuxでのJavaアプリの保護 Gavin Kingが答えた「EJB 3.0がHibernate + Springより優れていると思う点」 Strutsで作るセキュアWebアプリケーション 【Jakarta/Apacheウォッチ】第25回 リリース間近!アーキテクチャを一新したStruts 1.3 Javaクラスの居場所 this.getClass().getProtectionDomain().getCodeSource().getLocation().getPath(); BEA WebLogic Server 9 sets another SPECjAppServer2004 top mark The new features in Servlet 2.5 worthwhile? Tomcat Performance Higher on Linux Tapestry 4.0 Released Unit Testing Serialization Evolution Use EJB3 Persistence with Spring Java/J2EE Requirement Coverage Tool - JRequire V1.1 released Hibernate 3.1.1 released BEA to Open Source its Kodo Java Persistence APIs FIT plug-in for Maven released A New Java Persistence API for Berkeley DB Using EJB 3.0 outside the container AOP@Work AOP myths and realities published TrackIt 1.0.0, web-based project tracking tool, released Sun、JSR 292を提出 - Java仮想マシンレベルで動的な型を提案、他 GroovyによるRuby on Railsライクなフレームワーク - Grails 0.1公開 入力値検証用フレームワーク - Commons Validator 1.3.0、新バリデータ追加も Jakarta Commons IO Package 1.2 - ディレクトリごとコピー新機能も Configuration Management in Java EE Applications Using Subversion Strecks Strecks is a set of extensions to the Struts web development framework aimed at Java 5 users. The aim of Strecks is to enhance the capability of Struts in terms of productivity and maintainability. Strecks makes use of Java 5 language features, in particular JSR-175 annotations, to simplify the programming model for Struts applications. Javapedia Wicket -XX +HeapDumpOnOutOfMemoryError Javaバグに投票を Java例文集 for バグレポート JNIEasy
https://w.atwiki.jp/cz8686/pages/18.html
[Java]eclipseセットアップ ①フォントの設定 Windows ⇒Preferrence ⇒Fonts でText Fontを変更する。 ②JDKの設定 デフォルトでは、 JREのjava.exeが設定されているので JDKのjava.exeに変更する。 Windows ⇒Preference ⇒Java ⇒Installed JREs で Standard VMにJREがデフォルトチェックが 入っている これに インストールしてあるJDK1.4.XのJDKを設定する。 ●TOMCATプラグイン動作方法 ②のJDK設定の後、 Windows ⇒Preference ⇒Tomcat ⇒TOMCATの設定 でJREを変更したJDK1.4.xのものを指定する。 ●JSP.XMLの色分けプラグインの設定 (Solar Eclipse Web) Windows ⇒Preference ⇒Solar Eclipse Web で Add To List に xml を追加 [Java]HTTPでHTMLをゲット ■実行方法 以下の内容の.batファイルを作成、第一引数のURLのHTMLファイルを標準出力する。 java -Dhttp.proxyHost=proxy1.wwww.abc.co.jp -Dhttp.proxyPort=8080 DisplayURL2 %1 import java.io.*; import java.net.*; public class DisplayURL2{ public static void main(String[] args){ for(int i=0; i args.length;i++){ System.out.println("URL= "+ args[i]); try{ URL url = new URL(args[i]); BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream(),"Shift_JIS")); String line=""; while((line =reader.readLine()) != null){ System.out.println(line); } reader.close(); }catch(MalformedURLException e){ System.out.println("URLの形式が間違っています " + e); }catch(IOException e){ System.out.println("I/Oエラーです " +e); } } } }} [Java]JUnit使用例 ■JUnitのテスト画面起動 java junit.ui.TestRunner ■サンプルコード ●テスト対象クラス public final class Sample{ public int value = 0; Sample(int v){ this.value = v; } public int twice(){ this.value *= 3; //this.value *=2; return(this.value); } public int add1(){ this.value+=1; return(this.value); } } ●Sampleクラスに対するテスト実行クラス import junit.framework.*; public final class SampleTester extends TestCase{ public SampleTester(String name){ super(name); } protected void setUp(){ //ここで設定する } public static TestSuite suite(){ TestSuite suite = new TestSuite(); //テストケースを加える suite.addTest(new SampleTester("testAdd1")); suite.addTest(new SampleTester("testTwice")); return suite; } //テスト用メソッドの記述 public void testAdd1(){ Sample s1 = new Sample(10); s1.add1(); assert(s1.value == 11); } public void testTwice(){ Sample s1 = new Sample(10); Sample s2 = new Sample(5); assert(s1.value != s2.value); s2.twice(); assert(s1.value == s2.value); } } //end of SampleTester 使用法: SampleTester.classのあるフォルダから java junit.ui.TestRunner でGUIを起動し、 testclassnameに SampleTester と入力しRUNボタンを押す。 その結果が表示される。 [Java]MyDBAccess.java //package myjdbc; //import myjdbc.*; import java.sql.*; public class MyDBAccess { private String driver; private String url; private String user; private String password; private Connection conn; private Statement stmt; private ResultSet resultset; /** * コンストラクタ * @param driver ドライバー * @param url URL * @param user ユーザ名 * @param password パスワード * */ public MyDBAccess( String driver, String url, String user, String password) { this.driver = driver; this.url = url; this.user = user; this.password = password; } /*引数なしのコンストラクタ * 既定値の利用 * */ public MyDBAccess() { this.driver = "oracle.jdbc.driver.OracleDriver"; this.url = "jdbc oracle thin @192.168.1.1 1521 DB01"; this.user = "test"; this.password = "test"; // this.driver = "com.mysql.jdbc.Driver"; // this.url = "jdbc mysql //192.168.1.1/test"; // this.user = "root"; // this.password = ""; } /** * データベースへの接続を行う */ public synchronized void open() throws Exception { // Class.forName(driver); Class.forName(driver).newInstance(); conn = DriverManager.getConnection(url, user, password); stmt = conn.createStatement(); } /** * SQL 文を実行した結果の ResultSet を返す * @param sql SQL 文 */ public ResultSet getResultSet(String sql) throws Exception { if (stmt.execute(sql)) { return stmt.getResultSet(); } return null; } /** * SQL 文の実行 * @param sql SQL 文 */ public void execute(String sql) throws Exception { stmt.execute(sql); } /** * データベースへのコネクションのクローズ */ public synchronized void close() throws Exception { if (resultset != null) resultset.close(); if (stmt != null) stmt.close(); if (conn != null) conn.close(); } public static void main(String[] args) { MyDBAccess db = new MyDBAccess(); try { db.open(); ResultSet rs = db.getResultSet("SELECT * FROM LOGIN_TBL"); int i=0; while (rs.next()) { i++; String _user_id = rs.getString("USER_ID"); String _password = rs.getString("PASSWORD"); System.out.println(i + " "+ _user_id + "," + _password); } db.close(); } catch (Exception e) { e.printStackTrace(); } } } [Java]OracleJdbcTest1.java import java.sql.*; //import jdbc.sql.*; public class OracleJdbcTest1 { public static void main (String args []) throws SQLException, ClassNotFoundException { // Connectionの作成 Class.forName ("oracle.jdbc.driver.OracleDriver"); Connection conn = DriverManager.getConnection ("jdbc oracle thin @192.168.1.1 1521 DB01","scott", "tiger"); // OCIの場合 // DriverManager.getConnection ("jdbc oracle oci8 @TNSname","scott", "tiger"); // Statement の作成 Statement stmt = conn.createStatement (); // Resultset の作成 ResultSet rset = stmt.executeQuery ("select ENAME from EMP"); // データの表示 while (rset.next ()) System.out.println (rset.getString (1)); } } [Java]TripleDES DECODE import java.io.IOException; import java.io.PrintWriter; import java.net.URLEncoder; import java.net.URLDecoder; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.text.SimpleDateFormat; import java.util.Date; import java.io.*; import javax.crypto.BadPaddingException; import javax.crypto.Cipher; import javax.crypto.IllegalBlockSizeException; import javax.crypto.NoSuchPaddingException; import javax.crypto.spec.SecretKeySpec; public class ANGO_DECODE { byte[] keyMaterial ={ (byte)0x12,(byte)0x12,(byte)0x12,(byte)0x12,(byte)0x12,(byte)0x12,(byte)0x12,(byte)0x12, (byte)0x12,(byte)0x12,(byte)0x12,(byte)0x12,(byte)0x12,(byte)0x12,(byte)0x12,(byte)0x12, (byte)0xAB,(byte)0xCD,(byte)0xAB,(byte)0xCD,(byte)0xAB,(byte)0xCD,(byte)0xAB,(byte)0xCD }; //暗号文 //ファイル読み込み String line = null; String ciphertext = null; int count = 0; try{ BufferedReader reader = new BufferedReader( new FileReader(args[0])); while( ( line = reader.readLine()) != null){ count++; ciphertext = line; // URLデコード処理 String a1; String a2; a1 = URLDecoder.decode(ciphertext); // System.out.println("a1=" + a1); // BASE64デコード処理 byte[] cipherbytes = a1.getBytes(); Base64 base64obj = new Base64(); byte[] base64decbytes = base64obj.decode(cipherbytes); String base64decodeStr = new String(base64decbytes); //System.out.println("base64decodeStr=" + base64decodeStr); // TripleDES復号化処理 // TripleDES鍵の生成 SecretKeySpec tdeskey = new SecretKeySpec(keyMaterial,"DESede"); // Cipherインスタンスの生成 Cipher desCipher = Cipher.getInstance("DESede"); // 初期化 desCipher.init(Cipher.DECRYPT_MODE,tdeskey); byte[] plainbytes = desCipher.doFinal(base64decbytes); String plaintext = new String(plainbytes); // System.out.println("plaintext "+ plaintext ); System.out.println(count + "," + a1 + "," + plaintext); } //for end reader.close(); }catch(NoSuchAlgorithmException e){ e.printStackTrace(); }catch(NoSuchPaddingException e){ e.printStackTrace(); }catch(InvalidKeyException e){ e.printStackTrace(); }catch(IllegalBlockSizeException e){ e.printStackTrace(); }catch(BadPaddingException e){ e.printStackTrace(); }catch(FileNotFoundException e){ e.printStackTrace(); }catch(IOException e){ e.printStackTrace(); } } } [Java]war アーカイブ作成方法 Jarツールを使って、Webアプリケーション全体をアーカイブします。アーカイブしたいWebアプリケーションのルートディレクトリに移動して、以下のコマンドを実行してください。 jar cvf WARファイル名 ./* WARファイル名は当然「.war」の拡張子が必要です。testというディレクトリ配下のWebアプリケーションを test.warというファイル名でアーカイブしたい場合は、testディレクトリに移動して以下のコマンドで行います。 jar cvf test.war ./* [Java]時間取得 import java.util.*; import java.io.*; import java.text.*; public class Utils{ // getNow("yyyy.MM.dd at hh mm ss"); public static String getNow(String dateformat){ SimpleDateFormat formatter = new SimpleDateFormat(dateformat); Date currentTime = new Date(); String dateString = formatter.format(currentTime); return dateString; } } [Java]日本語パラメータ %! public String toUnicode(String s) throws java.io.UnsupportedEncodingException{ return (new String(s.getBytes("8859_1"),"JISAutoDetect")); } % html body % String name= toUnicode(request.getParameter("name") ); %
https://w.atwiki.jp/pspt/pages/264.html
Java JavaはC→C++→Javaという立ち位置にある。世界中に多くのJava開発者がいるため、C言語同様にプログラマーの必修言語とされ、知っておいて損はない言語である。なお、Javaの習得は他の言語に比べやや難しいためC言語を習得した後に勉強することをお勧めする。 JavaJavaのインストール Hello WorldHello.java cmd 注意点 Androidアプリの開発開発環境の構築 参考サイト Javaのインストール 下記のリンク先から最新のJDKをインストールしよう。 Java SE Development Kit 8u5 Hello World 画面に「Hello, World!」の文字列を表示させよう。 1.編集 2.コンパイル 3.実行 Hello.javaを作成する javacコマンドでHello.javaをコンパイルする javaコマンドでhello.classを実行する Hello.java public class Hello { public static void main(String[] args){ System.out.println("Hello, world!"); } } cmd C \xxx\yyy\zzz javac Hello.java C \xxx\yyy\zzz java Hello 注意点 ユーザー環境変数PATHにC \Program Files\Java\jdk1.8.0_05\bin;を追加しておくこと。 C \xxx\yyy\zzz はHello.javaファイルが置いてあるディレクトリを指す。 javaコマンドは拡張子を必要としない。 Androidアプリの開発 Javaの扱いに慣れてきたらAndroidアプリを開発しよう。 開発環境の構築 Android SDK(←Eclipseが含まれている)をインストール SDK Manager.exeを起動して各ツールをインストール ユーザー環境変数PATHにC \xxx\yyy\zzz\sdk\platform-tools;C \xxx\yyy\zzz\sdk\tools;を追加 Pleiades - Eclipse プラグインをインストールしてEclipseを日本語化(任意) 参考サイト 一番かんたんなjava入門
https://w.atwiki.jp/wiki6_takt/pages/9.html
Eclipse Eclipse起動オプション Eclipse.exe -VM c \java\javaw.exe -VMargs -Vms256M -Vmx512M -VM JVMの指定 -VMargs JVMへの引数 [-Vms 最小HeapSize][-Vmx 最大HeapSize] 文字化け WebSphereなどのIBM製品を使用し、Windows環境で作成した「shift_jis」文字CODEと 「euc」や「iso2022-jp」文字CODEのテキストとの相互変換を行い文字化けをする時があるようで対象となる文字は・・ 「∥」二重縦線 「~」波線 「-」記号(マイナス) 「¢」記号(セント) 「£」記号(ポンド) 「¬」記号(ノット) 理由は、Windows環境で作成した「shift_jis」の文字CODEが、 「MS932」文字CODEとして保存される為。 □補足 「MS932」文字CODEとはMicroSoft社が定義をした文字CODE。 上記の6文字の文字CODEが「shift_jis」と異なる。 他に"①"などの機種依存文字も含む文字CODE。 「shift_jis」, 「euc-jp」, 「iso2022-jp」は, 「JIS X 0208」として定義されている。 各文字コード一覧 MS932 SJIS EUC-JP ISO-2022-JP ~ 0xFF5E 0x301C 0x301C 0x301C ∥ 0x2225 0x2016 0x2016 0x2016 - 0xFF0D 0x2212 0x2212 0x2212 ¢ 0xFFE0 0x00A2 0x00A2 0x00A2 £ 0xFFE1 0x00A3 0x00A3 0x00A3 ¬ 0xFFE2 0x00AC 0x00AC 0x00AC □文字化けの原因 IBM製品で取り扱う文字コードの種類は 「MS932」「shift_jis」「euc-jp」「iso2022-jp」と4種類あり(utf-8とutf-16は除く)、 「shift_jis」「euc-jp」「iso2022-jp」の3種類の中で相互に文字CODEの変換を行う分には文字化けはしないが、「MS932」との変換を行うと文字化けする。 つまり MS932←→shift_jis MS932←→euc-jp MS932←→iso2022-jp は、文字化けする。 shift_jis←→shift_jis/euc-jp/iso2022-jp euc-jp←→shift_jis/euc-jp/iso2022-jp iso2022-jp←→shift_jis/euc-jp/iso2022-jp は、文字化けしない。 □ASTERIAの各バージョンによる文字コードの取り扱い ASTERIA R2で使用する文字コードは以下のようになります。 "shift_jis"→MS932文字コードとして取り扱いをします。 "SJIS"→shift_jis文字コードとして取り扱いをします。 "euc-jp"→euc-jp文字コードとして取り扱いをします。 "iso2022-jp"→iso2022-jp文字コードとして取り扱いをします。 注)Windows環境で作成したテキストは"shift_jis"と指定するだけで読み込みが可能です。 ASTERIA 3で使用する文字コードは以下のようになります。 "shift_jis"→shift_jis文字コードとして取り扱いをします。 "Windows-31J"→MS932文字コードとして取り扱いをします。 "euc-jp"→euc-jp文字コードとして取り扱いをします。 "iso2022-jp"→iso2022-jp文字コードとして取り扱いをします。 注)Windows環境で作成したテキストは明示的に"Windows-31J"と指定することで読み込みが可能です。 "shift_jis"の指定の場合には上記文字コードの場合には文字化けをします。 ASTERIA R2とASTERIA3で指定方法が異なるのは、ASTERIAが使用しているJava環境のバージョンの違いによるものです。 □文字化けの解消 ASTERIAでMS932とshift_jis, euc-jp, iso2022-jpの相互に文字コードを変換する場合には、 別途提供しておりますJava関数を使用することで文字化けを解消することができます。 例) MS932文字コード ↓ Java関数(A) ↓ shift_jis euc-jp iso2022-jp shift_jis euc-jp iso2022-jp ↓ Java関数(B) ↓ MS932文字コード Java関数(A) MS932文字コードのテキストをASTERIAのString型に読み込むときにJIS X 0208として変換を行います。 この変換によりString型からshift_jis, euc-jp, iso2022-jpへの相互変換においての文字化けが解消いたします。 # #String s = in[0].strValue(); #int len = s.length(); #StringBuffer buf =new StringBuffer(len); #for (int i=0; i len; i++) { # char c = s.charAt(i); # switch (c) { # case uFF5E c = u301C ; break; # case u2225 c = u2016 ; break; # case uFF0D c = u2212 ; break; # case uFFE0 c = u00A2 ; break; # case uFFE1 c = u00A3 ; break; # case uFFE2 c = u00AC ; break; # } # buf.append(c); #} #out.setValue(buf.toString()); # Java関数(B) JIS X 0208のテキストをASTERIAのString型からMS932として変換を行います。 この変換によりJIS X 0208(String型)からMS932への変換においての文字化けが解消いたします。 # #String s = in[0].strValue(); #int len = s.length(); #StringBuffer buf =new StringBuffer(len); # for (int i=0; i len; i++) { # char c = s.charAt(i); # switch (c) { # case u301C c = uFF5E ; break; # case u2016 c = u2225 ; break; # case u2212 c = uFF0D ; break; # case u00A2 c = uFFE0 ; break; # case u00A3 c = uFFE1 ; break; # case u00AC c = uFFE2 ; break; # } # buf.append(c); #} #out.setValue(buf.toString()); # Java関数(A)ではinputdata_AにはMS932文字コードを含む文字列が定義されていることを想定し、outputdata_AにはJIS X 0208に変換したテキストを出力します。 Java関数(B)ではinputdata_BにはJIS X 0208を含む文字列が定義されていることを想定し、outputdata_BにはMS932文字コードに変換したテキストを出力します。 注)これらの関数は文字数が増加するに従い条件判断の回数も増加するため、処理速度は文字数に比例してかかることとなります。
https://w.atwiki.jp/naobe/pages/25.html
言語に戻る EJB JavaEE5 MBean JMX JNDI サーブレット 言語仕様 項目 説明 transient 修飾子。Seriariseオブジェクトの保管しないフィールドを修飾する。 クラスローダ http //www.techscore.com/tech/Java/JavaEE/Servlet/supplement-1/ 参照 目的 同じ名前でバージョンの異なるクラスを使用するために使う。クラスローダが異なればバージョンが異なっても良い。自分自身のクラスローダを得るにはgetClassLoader()メソッドを用いる。 クラスローダには親子関係があり、子クラスローダがクラスをロードするときには、親クラスローダにロードを依頼してロードできなければ、子クラスローダがロードする。 Class#getClassLoader()は、このクラスをロードしたクラスローダを返す クラスローダによってロードされたClassはパーマネント領域に格納される。ClassLoaderがGCされるとGCから解放される。 VMのクラスローダ ブートストラップクラスローダ JAVA_HOME /lib下のJARファイルに含まれるクラスをロードする。JDK6は、 JAVA_HOME /jre/lib下? 親はいない 拡張クラスローダ JAVA_HOME /lib/ext下のJARファイルに含まれるクラスをロードする。JDK6は、 JAVA_HOME /jre/lib/ext下?親はいない システムクラスローダ CLASSPATHで指定した位置からクラスをロードする。親は拡張クラスローダ。ブートストラップクラスローダは親子関係なしでも委譲されるということでは? 通常のnew Foo()ではこのクラスローダが使われる。 ブートストラップクラスローダ、拡張クラスローダ、システムクラスローダの順番でクラスをロードする。 コンテキストクラスローダ(JDK6 API Threadより) コンテキスト ClassLoader は、クラスおよびリソースをロードするときに、このスレッドで実行中のコードが使用するためにスレッドの作成側によって提供されます。コンテキスト ClassLoader が設定されていない場合、デフォルトでは親 Thread の ClassLoader コンテキストになります。通常、親スレッドのコンテキスト ClassLoader は、アプリケーションのロードに使用されるクラスローダーに設定されます。 なので、設定しなければシステムクラスローダがコンテキストクラスローダになる。 コンテキスト・クラスローダを設定・取得するには、java.lang.Thread#setContextClassLoader,getContextClassLoaderメソッドを使う。 クラスローダ作成 JDK6 APIより たとえば、アプリケーションはネットワーククラスローダーを作成して、サーバーからクラスファイルをダウンロードできます。コードは次のようになります。 ClassLoader loader = new NetworkClassLoader(host, port); Object main = loader.loadClass("Main", true).newInstance(); . . . ネットワーククラスローダーのサブクラスは、ネットワークからクラスをロードするために findClass メソッドと loadClassData メソッドを定義しなければなりません。クラスを作成するバイトを一度ダウンロードしたら、defineClass メソッドを使ってクラスインスタンスを生成する必要があります。実装の例を次に示します。 class NetworkClassLoader extends ClassLoader { String host; int port; public Class findClass(String name) { byte[] b = loadClassData(name); return defineClass(name, b, 0, b.length); } private byte[] loadClassData(String name) { // load the class data from the connection . . . } } 特定のディレクトリからクラスをロードするクラスローダを作成してみる。 MyClassLoaderのmainメソッドで、test.MyClassLoaderTargetをロードしClassを作成する MyClassLoaderはClassLoaderを継承したクラスで、loadClassメソッドをオーバライドし、c /mydoc/tmp/を優先的にロードするディレクトリとしている。c /mydoc/tmp/にクラスがない場合は、ClassLoaderのloadClassメソッドを実行する ClassLoaderのloadClassメソッドでは、キャッシュにあれば、そのクラスを返す。なければ親クラスローダに移譲する。なければシステムクラスローダを使ってクラスをロードする Class#newInstance()を実行して、インスタンスを生成する MyClassLoaderTarget#execute()を実行し、MyClassLoaderTarget2をnewしてexecute()を実行する 実行結果を見ると、MyClassLoaderTarget2のクラスローダは、MyClassLoaderであることがわかる。つまりクラスローダを使ってロードしたクラスから別のクラスをnewするときはそのクラスローダを使うことがわかる。クラスローダを作成すると親クラスローダはシステムクラスローダになる。 コンテキストクラスローダは明示的に使用しない限り、使われることはなさそう。 package test; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; public class MyClassLoader extends ClassLoader { private static final int BUFSIZE = 1024; private byte[] result; private int last = 0; @Override public Class ? loadClass(String name) throws ClassNotFoundException { Class ? c = null; try { c = findClass(name); } catch (ClassNotFoundException e) { c = super.loadClass(name); } return c; } private void dbg(String string) { System.out.println(string); } @Override protected Class ? findClass(String name) throws ClassNotFoundException { try { byte[] b = loadClassData(name); return defineClass(name, b, 0, b.length); } catch (Exception e) { throw new ClassNotFoundException(e.getMessage(), e); } } private byte[] loadClassData(String name) throws IOException { result = new byte[0]; last = 0; FileInputStream ins = null; try { byte[] buf = new byte[BUFSIZE]; int readSize = 0; name = name.replace( . , / ); File classFile = new File("c /mydoc/tmp/" + name + ".class"); ins = new FileInputStream(classFile); while((readSize = ins.read(buf)) != -1 ) { moveToResult(readSize, buf); } return result; } finally { if(ins != null) { ins.close(); } } } private void moveToResult(int readSize, byte[] buf) { byte[] tmp = new byte[last + readSize]; // 結果バイト配列をtmp配列の先頭にコピー System.arraycopy(result, 0, tmp, 0, result.length); // bufをtmp配列にコピー System.arraycopy(buf, 0, tmp, last, readSize); result = tmp; last += readSize; } public static void main(String[] args) { try { MyClassLoader loader = new MyClassLoader(); System.out.println("parent " + loader.getParent().getClass().getName()); Class ? clazz = loader.loadClass("test.MyClassLoaderTarget"); System.out.println("target class loader name " + clazz.getClassLoader().getClass().getName()); ((Executor)clazz.newInstance()).execute(); } catch (Exception e) { e.printStackTrace(); } } } package test; public class MyClassLoaderTarget implements Executor { @Override public void execute() { System.out.println("AAA"); MyClassLoaderTarget2 target2 = new MyClassLoaderTarget2(); target2.execute(); System.out.println("target2 class loader name " + target2.getClass().getClassLoader().getClass().getName()); } public static void main(String[] args) { MyClassLoaderTarget target = new MyClassLoaderTarget(); target.execute(); } } package test; public class MyClassLoaderTarget2 implements Executor { @Override public void execute() { System.out.println("BBB"); } public static void main(String[] args) { MyClassLoaderTarget2 target = new MyClassLoaderTarget2(); target.execute(); } } package test; public interface Executor { public void execute(); } 実行結果 parent sun.misc.Launcher$AppClassLoader target class loader name test.MyClassLoader AAA BBB target2 class loader name test.MyClassLoader ThreadLocal スレッドに固有のオブジェクトを保管するために使う(Thread Singleton)。Servletの中で、使用例としてDBに対するConnectionをスレッド毎に保管する場合があげられる。この場合、引数にConnectionを作成すると全てのメソッドにConnectionの引数が必要になり手間がかかる。スレッドにプライベートフィールドを作成して保管できないときに使える。 JDBC 参照 タイプ 説明 備考 type2 ベンダのライブラリと共同して、DBと通信。ベンダのクライアントアプリが必要。 type4 直接DBと通信。JDBCドライバサイズが大きい バッチ insert, updateが連続して行われるときにネットワークトラフィックを削減するために使う。PreparedStatementオブジェクトに対して、addBatch(), executeBatch()メソッドを使うと複数のステートメントをまとめてDBサーバ送信する。 言語コード コード名 説明 Windows-31J ShiftJISの拡張。NEC特殊コードもサポート。 スレッドダンプ 稼働中のスレッドを標準出力にダンプする。 kill -3 プロセス番号 出力例 daemon以外のスレッドを見る。以下の例ではSNMP APIで停止している。 Full thread dump Java HotSpot(TM) Server VM (11.2-b01 mixed mode) "RMI Scheduler(0)" daemon prio=10 tid=0x0955e000 nid=0x15db waiting on condition [0x30cd1000..0x30cd1fa0] java.lang.Thread.State TIMED_WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for 0x37f243d8 (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java 198) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java 1963) at java.util.concurrent.DelayQueue.take(DelayQueue.java 164) at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java 583) at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java 576) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java 947) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java 907) at java.lang.Thread.run(Thread.java 619) "Thread-7" prio=10 tid=0x0954bc00 nid=0x15bf in Object.wait() [0x30eb7000..0x30eb7ea0] java.lang.Thread.State TIMED_WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on 0xa89ec300 (a com.adventnet.snmp.snmp2.SnmpCallback) at com.adventnet.snmp.snmp2.SnmpCallback.sleepUntilNotified(SnmpCallback.java 166) - locked 0xa89ec300 (a com.adventnet.snmp.snmp2.SnmpCallback) at com.adventnet.snmp.snmp2.SnmpCallback.run(SnmpCallback.java 152) アノテーション 注釈。プログラムに影響を与えない。プログラムから読める。コンパイラの動作に影響を与える。 @Override Overrideアノテーションを付加したメソッドがオーバライドメソッドでなければコンパイルエラーになる。 @SuppressWarning Xlintを指定したときに発生する警告メッセージを抑制する。 アプレット jarファイルを指定するには、ARCHIVEタグを使う。CLASSPATHはきかない。 セキュリティポリシー java.policyファイルの構文 grant signedBy "signer_names", codeBase "URL", principal principal_class_name "principal_name", principal principal_class_name "principal_name", ... { permission permission_class_name "target_name", "action",signedBy "signer_names"; permission permission_class_name "target_name", "action",signedBy "signer_names"; ... }; ここで、"signer_names"、"URL"、principal_class_name、"principal_name"、permission_class_name、"target_name"、"action"、"signer_names"は、変数。 signedBy 、codeBase、、principal は省略可能。 意味は、signer_namesで署名されたURLにあるプログラムが、permission_class_nameで規定されるtarget_nameに対して、actionすることを許可する。target_name, actionについては、permission_class_nameのAPIを参照。 http //java.sun.com/j2se/1.5.0/ja/docs/ja/guide/security/PolicyFiles.html 参照。 例 permission java.io.FilePermission "\\\\192.168.1.40\\-", "read,write"; 192.168.1.40のリモートファイルに対する読み書きを許可する。 Linux firefoxへのJava Plugin インストール 例 # ln -s /usr/java/jdk1.6.0_20/jre/lib/i386/libnpjp2.so /opt/firefox/plugins インストールの確認 urlにabout pluginsを設定して開く Linuxでのplugin コントロールパネル 起動 $JAVA_HOME/bin/ControlPanel を実行 最大メモリ容量の修正 "-XX MaxPermSize=256m"をJavaタブのアプレットパラメータに追加 その他 スタックトレースをStringに変換する 仕事の都合で、最後の行で改行を削除してタブをスペースに変換している。 private String getStackTraceAsString(Exception e) { ByteArrayOutputStream ostream = new ByteArrayOutputStream(100); e.printStackTrace(new PrintStream(ostream)); String sep = System.getProperty("line.separator"); return ostream.toString().replaceAll(sep, "").replace("\t", " "); } 固定長レコードのファイルを出力 package test; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.UnsupportedEncodingException; public class SingleFille { private BufferedOutputStream bstream; /** * ファイルに書き込むデータ * 桁数 * 内容 */ private String[][] data = { {"aaa1", "bbb1", "ccc1"}, {"漢字2", "bbb2", "ccc2"}, {"aaa3", "漢字3", "ccc3"}, {"aaa4", "bbb4", "漢字4"}, }; /** 列の桁数 */ private int[] length = {10, 20, 30}; /** ファイルオフセット */ private int offset = 0; private static final String FILE_PATH = "singleFile.dat"; public static void main(String[] args) { SingleFille sfile = new SingleFille(); try { sfile.execute(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public void execute() throws IOException { File file = new File(FILE_PATH); try { FileOutputStream stream = new FileOutputStream(file); bstream = new BufferedOutputStream(stream); for(int i = 0; i data.length; i++) { String[] line = data[i]; putFile(line); } } catch (IOException e) { throw e; } finally { if(bstream != null) { try { bstream.close(); } catch (IOException e) { throw e; } } } } /** * @param line * @throws IOException */ private void putFile(String[] line) throws IOException { for(int i = 0; i line.length; i++) { //各列を桁数になるように整形 byte[] term = createTerm(line[i], i); bstream.write(term); offset += term.length; } } /** * @param term * @param index * @return * @throws UnsupportedEncodingException */ private byte[] createTerm(String term, int index) throws UnsupportedEncodingException { //項目を格納するバイト byte[] outterm = new byte[length[index]]; //項目をShift_JISのバイトに変換 byte[] interm = term.getBytes("SJIS"); for(int i = 0; i outterm.length; i++) { if( i interm.length) { outterm[i] = interm[i]; } else { //残りはスペース outterm[i] = 0x20; } } return outterm; } }
https://w.atwiki.jp/lmes2/pages/231.html
Java 今ここにあるのは、サーブレット。JSPもたぶん後から追加される。 目次 Javaとは用語解説 参考サイト 環境構築Java開発環境JDK6 Eclipse Ant Maven2 WebサーバApache Tomcat WebアプリケーションフレームワークStruts Apache Tapestry ライブラリ・クラスiText(PDF作成) JUnit(テスト) Hibernate(O/Rマッピング) DB接続ODBC JDBC 用語解説 Javaとは 用語解説 Java - Wikipedia Java Servlet - Wikipedia JavaServer Pages - Wikipedia 参考サイト Javaの道(Java入門・リファレンス) Javaの学習ならJavaDrive 環境構築 Java開発環境 JDK6 JavaDrive / JDK 6のインストールと環境設定 Eclipse Eclipse (統合開発環境) - Wikipedia Ant Maven2 Maven2のTipsを集めるWiki - CookBook / インストール Maven2のTipsを集めるWiki - CookBook アジャイル開発のヌーラボ / 第4章 Maven2によるビルド入門 Webサーバ Apache Apache HTTP Server - Wikipedia コンパイルとインストール - Apache HTTP サーバ Tomcat Webアプリケーションフレームワーク Struts Apache Struts - Wikipedia Apache Tapestry Apache Tapestry - Wikipedia ライブラリ・クラス iText(PDF作成) iTextを利用してJavaからPDF形式の帳票を出力する CodeZine JUnit(テスト) JUnit - Wikipedia Hibernate(O/Rマッピング) Hibernate - Wikipedia DB接続 ODBC JDBC 用語解説 O/Rマッピング